home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SNIP0492.ARJ / STRSORT.C < prev    next >
C/C++ Source or Header  |  1991-09-07  |  834b  |  32 lines

  1. /*
  2. **  strsort() -- Shell sort an array of string pointers via strcmp()
  3. **  public domain by Ray Gardner   Denver, CO   12/88
  4. */
  5.  
  6. strsort (char **v, unsigned n)
  7. {
  8.       unsigned int gap, i, j;
  9.       char **a, **b, *tmp;
  10.  
  11.       for (gap = 0; ++gap < n; )
  12.             gap *= 2;
  13.       while (gap /= 2)
  14.       {
  15.             for (i = gap; i < n; i++)
  16.             {
  17.                   for (j = i - gap; ;j -= gap)
  18.                   {
  19.                         a = v + j;
  20.                         b = a + gap;
  21.                         if (strcmp(*a, *b) <= 0)
  22.                               break;
  23.                         tmp = *a;
  24.                         *a = *b;
  25.                         *b = tmp;
  26.                         if (j < gap)
  27.                               break;
  28.                   }
  29.             }
  30.       }
  31. }
  32.